
package com.eltsistemas.adapter;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JTextField;

public class Mascara {
    
    private String character;
    private char c;
    
    //Field Formating
    public JFormattedTextField getFormating(JFormattedTextField formatted, String maskFormatted)
    { 
        /*
         * Esse metodo retorna a mascara passado pelo usuario para o JFormatted que o chamou
         */
        formatted.setText(null);
        formatted.setFormatterFactory( null ); 
        javax.swing.text.MaskFormatter format = null;
        try
        {
            format = new javax.swing.text.MaskFormatter(maskFormatted);
        }
        catch(ParseException ex)
        {
            System.out.println(""+ex);
        }

        format.setPlaceholderCharacter('*'); 
        formatted.setFormatterFactory( new javax.swing.text.DefaultFormatterFactory(format) );
        formatted.setValue(null);
        return formatted;
    }
    
    public JFormattedTextField getVerifyFormatingEmpty(JFormattedTextField formatted)
    {
        /*
         * Esse método garante que todos os caracteres da mascara é diferente de *, caso um caracter
         * seja igual a * o campos será null, o resultado da operação é retornado para o JFormatted que o chamou.
         */
        character = formatted.getText().trim();
        for(int i=0; i < character.length(); i++)
        {
            c = character.charAt(i);                                        
            if(c == 42)    //O número 42 epresenta o caracter * na tabela ASCll   
            {
               formatted.setFormatterFactory( null );
               formatted.setText( null );
            }        
        }
        return formatted;
    }
    
    public String getVerifyFormatingNotEmpty(JFormattedTextField formatted)
    {
        String noEmpty = null;
        character = formatted.getText().trim();
        for(int i=0; i < character.length(); i++)
        {
            c = character.charAt(i);
            if(c != 42)     //O número 42 epresenta o caracter * na tabela ASCll
            {
              noEmpty = ""+c;
            }
        }
        return noEmpty;
    }
    
    public JTextField getNumberInteger(JTextField textField)
    { 
       /*
       *   Ess método permitir que usuário digite apenas numeros para o JTextField que o chamou
       */
       textField.getText();
       textField.addKeyListener( new KeyAdapter() {
            @Override
         public void keyTyped(KeyEvent e)
         {
            if((!Character.isDigit(e.getKeyChar())))
            {
                e.consume();
            }
         }
      });
       return textField;

    }
    
}
